package com.obradovicnjegovan.webprodavnica.so.impl;

import java.util.Date;

import org.apache.tapestry5.ioc.annotations.Inject;
import org.hibernate.exception.ConstraintViolationException;

import com.obradovicnjegovan.webprodavnica.dao.HibernateDao;
import com.obradovicnjegovan.webprodavnica.entities.Korpa;
import com.obradovicnjegovan.webprodavnica.entities.OdabranProizvod;
import com.obradovicnjegovan.webprodavnica.entities.Proizvod;
import com.obradovicnjegovan.webprodavnica.so.UbaciProizvodUKorpu;

public class UbaciProizvodUKorpuImpl implements UbaciProizvodUKorpu {
	@Inject
	private HibernateDao hibernateDao;
	private OdabranProizvod odabranProizvod;
	
	public HibernateDao getHibernateDao() {
		return hibernateDao;
	}
	public void setHibernateDao(HibernateDao hibernateDao) {
		this.hibernateDao = hibernateDao;
	}
	public OdabranProizvod getOdabranProizvod() {
		return odabranProizvod;
	}
	public void setOdabranProizvod(OdabranProizvod odabranProizvod) {
		this.odabranProizvod = odabranProizvod;
	}
	
	public void odaberiProizvod(Proizvod proizvod, Korpa korpa, int kolicina){
		this.odabranProizvod = new OdabranProizvod();
		odabranProizvod.setDate(new Date());
		odabranProizvod.setKolicina(kolicina);
		odabranProizvod.setKorpa(korpa);
		odabranProizvod.setProizvod(proizvod);
	}

	public Object execute() {
		try {
			if (getOdabranProizvod().getKolicina() <= getOdabranProizvod().getProizvod().getStanjeNaZalihama()) {
				hibernateDao.save(getOdabranProizvod().getKorpa());
				return getOdabranProizvod();
			} else if (getOdabranProizvod().getProizvod().getStanjeNaZalihama()==0) {
				return getOdabranProizvod().getProizvod().getNazivProizvoda() + "- nema na zalihama";
			} else {
				return  getOdabranProizvod().getProizvod().getNazivProizvoda() + "- nema u dovoljnoj kolicini. Smanjite trazenu kolicinu";
			}
		} catch (Exception e) {
			System.out.println("\n\n\n\n\n\n************************\nSistemska greska. Neuspesno ubacen proizvod u korpu. Problem: "+e+"\n************************\n\n\n\n\n\n");
			return "Sistemska greska. Neuspesno ubacen proizvod u korpu. Problem: "+e;
		}
	}

}
